#ifndef _CLED_CTRL_H_
#define _CLED_CTRL_H_

#define CLED_USE_POLSYS				// 不使用 Polsys 需要注释掉
#define CLED_MAX_LED			1		// 可控制的最大LED数量，值越大需要的内存越大

#include "polsys_mcu.h"

// 自定义类型

typedef enum _cled_action_t	// LED动作（状态）
{
	CLED_NULL,
	CLED_ON,
	CLED_OFF,
	CLED_FLASH,
	//CLED_FAST_FLASH,
	CLED_GRA_ON,
	CLED_GRA_OFF,
	//CLED_ON_GRA_OFF,
	CLED_GRA_BREATH,
    CLED_GRA_COLOR,
	_CLED_END
}cled_action_t;

typedef union _color_t
{
    u32 all;	// 0XAARRGGBB
    struct
    {
        u8 b;
        u8 g;
        u8 r;
        u8 a;
    };
}color_t;



typedef void (*cled_set_value_func_t)(color_t value);

typedef struct _cled_t	// 彩色LED的属性
{
	cled_set_value_func_t setValue;
	int mTime;
	int mCount;

	color_t mColor;
	int mActionValue;
	cled_action_t mAction;
}cled_t;


// APIs

#ifndef USE_POLSYS
void CLEDC_CtrlLoop();
#endif
void CLEDC_Regist(cled_t *obj, cled_set_value_func_t set_value_func);
void CLEDC_SetColor(cled_t *obj, u32 color);
void CLEDC_SetAction(cled_t *obj, cled_action_t action, int action_value);
cled_action_t CLEDC_GetAction(cled_t *obj);

#endif
